# Questionnaire about git usage and understanding [[Source Control]] [[Git]] - Do you think of a git commit as: - A patch file / diff + metadata / parents - A snapshot of the source directory + metadata (commit message, parents) - Both - Something else - When you do code reviews, do you: - Look at the full patch (compare files in github, review view in phabricator) - Look at individual commits / commit history - Checkout the feature branch - Checkout what the merge result would be - Checkout individual commits of the feature branch - Run the software under review manually - Do you rebase branches before opening a pull request? - Do you have long running feature development? - Do you do "long" feature development in side branches? - How often do you merge the progress of long running feature development into the main branch? - Do you use squash merges? Fast forward merges? - If yes, why? - If not, why? - Do you look at the git history? - If so, using which tools, and in what way? - Do you clean up your branch history before submitting a PR? - Do you do interactive staging / selective staging (only certain hunks, etc...)? - If so, which tools do you use? - How often do you encounter merge conflicts? - If you encounter merge conflicts, what is a typical conflict size? - What techniques do you use to resolve git conflicts? - Do you use git rerere? - What is your current git situation: - How many repos? - Average repo size: - Contributors - Age - Overall LOC - Number of commits on main - Number of merged pull requests on main - Number of pull requests merged per week - Pull requests: - Average commit count in pull request - Which source control systems did you use in the past: - Copy folders / zip folders - RCS - CVS - SVN - Perforce - Visual Sourcesafe - mercurial - arch/monotone/artisanal - Which source control webapps/services do you use for code reviews: - Self hosted - Phabricator - gitlab - github - bitbucket - jetbrains upsource - other - How long have you been using git for? - How well do you know git internals? - I am a git contributor - I implemented a git clone / I know them quite well - I roughly know about git internals - Not well - Do you use additional CLI tools (git extensions, etc...) to assist you when working with source control? - How much did you tweak your gitconfig (how many aliases, special tweaks, etc...) - Do you help other colleagues with source control (git) issues? - If so, what are the issues you usually encounter? - How much git-fu do you have to apply to solve the issues? - Do you use code style as a way to facilitate source control operations? - What kind of merge conflicts do you most commonly have? - Conflicts on index files like package.json or Makefile - Conflicts on function argument lists - Conflicts on terse one-line style code